/**
 * SysTextServiceImpl.java -- 2017-10-16 17:18:36
 * 作者：欧增奇 -- 代码生成器自动生成
 * 联系方式：425752797@qq.com
 * http://www.ouzengqi.com/
 */
package com.ozq.sys.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ozq.common.page.Page;
import com.ozq.common.page.PageUtil;
import com.ozq.sys.dao.entity.SysText;
import com.ozq.sys.dao.mapper.SysTextMapper;
import com.ozq.sys.service.inter.SysTextService;

/**
 * <系统-文本表接口实现> <功能详细描述>
 * 
 * @author 欧增奇
 * @version [V2.0, 2017-10-16 17:18:36]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Service("sysTextService")
public class SysTextServiceImpl implements SysTextService
{
    static Logger logger = LoggerFactory.getLogger(SysTextServiceImpl.class);

    /**
     * 系统-文本表Mapper[SysText]
     */
    @Autowired
    private SysTextMapper sysTextMapper;

    /** ------------------------------------公共-工具------------------------------------ **/
    /**
     * 分页公共实现
     */
    @Override
    public Page pageManage(Page page)
    {
        logger.debug("debug page: {}", page);

        // 默认每页10条记录
        if (page.getEveryPage() <= 0)
            page.setEveryPage(10);

        // 默认第一页
        if (page.getCurrentPage() <= 0)
            page.setCurrentPage(1);

        return PageUtil.createPage(page.getEveryPage(), page.getTotalCount(), page.getCurrentPage());
    }

    /**
     * 缓存清理
     */
    @Override
    public void clearCache()
    {
        logger.debug("清理系统-文本表缓存成功:{}", "sysText");
    }

    /** ------------------------------------公共-业务------------------------------------ **/
    /** --公共-业务-统计-- **/
    /**
     * 统计系统-文本表所有的记录数
     * 
     * @return int
     */
    @Override
    public int countAll()
    {
        return sysTextMapper.countAll();
    }

    /**
     * 按照条件精确统计系统-文本表
     * 
     * @param sysText
     * @return int
     */
    @Override
    public int countBy(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return 0;

        return sysTextMapper.countBy(sysText);
    }

    /**
     * 按照条件模糊统计系统-文本表
     * 
     * @param sysText
     * @return int
     */
    @Override
    public int countLike(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return 0;

        return sysTextMapper.countLike(sysText);
    }

    /** --公共-业务-添加-- **/
    /**
     * 插入系统-文本表
     * 
     * @param sysText
     * @return sysText
     */
    @Override
    public SysText add(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return null;

        sysTextMapper.insert(sysText);
        return sysText;
    }

    /**
     * 插入系统-文本表集合
     * 
     * @param sysText
     * @return boolean
     */
    @Override
    public boolean addList(List<SysText> sysTexts)
    {
        logger.debug("debug sysTexts: {}", sysTexts);

        if (sysTexts == null || sysTexts.isEmpty())
            return false;

        List<SysText> inserts = filterEmpty(sysTexts);
        if (inserts.isEmpty())
            return false;

        sysTextMapper.insertList(inserts);
        return true;
    }

    /**
     * 批量插入系统-文本表，当id存在更新这条数据，不存在插入这条数据（注意：会影响所有字段）
     * 
     * @param sysTexts
     * @return boolean
     */
    @Override
    public boolean addUpdateList(List<SysText> sysTexts)
    {
        logger.debug("debug sysTexts: {}", sysTexts);

        if (sysTexts == null || sysTexts.isEmpty())
            return false;

        List<SysText> inserts = filterEmpty(sysTexts);
        if (inserts.isEmpty())
            return false;

        sysTextMapper.insertUpdateList(inserts);
        return true;
    }

    /** --公共-业务-查询-- **/
    /**
     * 按照系统-文本表查询,如果存在id，则用id查询(本方法只会返回一条数据，当查询有1条以上返回null)
     * 
     * @param sysText
     * @return sysText
     */
    @Override
    public SysText find(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return null;
        
        if (sysText.getTextId() != null)
            return sysTextMapper.selectById(sysText.getTextId());

        sysText.setStartLine(0);
        sysText.setEndLine(1);
        List<SysText> list = sysTextMapper.listBy(sysText);
        if (list == null || list.isEmpty())
            return null;

        return list.get(0);
    }

    /**
     * 按照id查询系统-文本表
     * 
     * @param textId
     * @return sysText
     */
    @Override
    public SysText findById(Integer textId)
    {
        logger.debug("debug textId: {}", textId);

        if (textId == null)
            return null;

        return sysTextMapper.selectById(textId);
    }

    /**
     * 按照ids查询系统-文本表
     * 
     * @param textIds
     * @return sysText集合
     */
    @Override
    public List<SysText> findByIds(List<Integer> textIds)
    {
        logger.debug("debug textIds: {}", textIds);

        if (textIds == null || textIds.isEmpty())
            return null;

        return sysTextMapper.selectByIds(textIds);
    }

    /**
     * 按照条件精确查询系统-文本表返回集合方法
     * 
     * @param sysText
     * @return sysText
     */
    @Override
    public List<SysText> listBy(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return null;

        return sysTextMapper.listBy(sysText);
    }

    /**
     * 按照条件模糊查询系统-文本表返回集合方法
     * 
     * @param sysText
     * @return sysText集合
     */
    @Override
    public List<SysText> listLike(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return null;

        return sysTextMapper.listLike(sysText);
    }

    /**
     * 按照分页条件精确查询系统-文本表返回集合方法
     * 
     * @param sysText
     * @return sysText集合
     */
    @Override
    public List<SysText> listPageBy(Page page, SysText sysText)
    {
        logger.debug("debug page: {}", page);
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            sysText = new SysText();

        if (page != null)
        {
            sysText.setStartLine(page.getBeginIndex());
            sysText.setEndLine(page.getEveryPage());
        }

        return sysTextMapper.listBy(sysText);
    }

    /**
     * 按照分页条件模糊查询系统-文本表返回集合方法
     * 
     * @param sysText
     * @return sysText集合
     */
    @Override
    public List<SysText> listPageLike(Page page, SysText sysText)
    {
        logger.debug("debug page: {}", page);
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            sysText = new SysText();

        if (page != null)
        {
            sysText.setStartLine(page.getBeginIndex());
            sysText.setEndLine(page.getEveryPage());
        }

        return sysTextMapper.listLike(sysText);
    }

    /** --公共-业务-修改-- **/
    /**
     * 修改系统-文本表
     * 
     * @param sysText
     * @return boolean
     */
    @Override
    public boolean update(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null || sysText.getTextId() == null)
            return false;

        sysTextMapper.update(sysText);
        return true;
    }

    /**
     * 批量修改系统-文本表
     * 
     * @param sysTexts
     * @return boolean
     */
    @Override
    public boolean updateList(List<SysText> sysTexts)
    {
        logger.debug("debug sysTexts: {}", sysTexts);

        if (sysTexts == null)
            return false;

        List<SysText> news = new ArrayList<SysText>();
        for (SysText sysText : sysTexts)
            if (sysText != null && sysText.getTextId() != null)
                news.add(sysText);

        if (news.isEmpty())
            return false;

        sysTextMapper.updateList(news);
        return true;
    }

    /** --公共-业务-删除-- **/
    /**
     * 指定id删除
     * 
     * @param textId
     * @return boolean
     */
    @Override
    public boolean deleteById(Integer textId)
    {
        logger.debug("debug textId: {}", textId);

        if (textId == null)
            return false;

        sysTextMapper.deleteById(textId);
        return true;
    }

    /**
     * 批量删除指定ids
     * 
     * @param textId
     * @return boolean
     */
    @Override
    public boolean deleteByIds(List<Integer> textIds)
    {
        logger.debug("debug textIds: {}", textIds);

        if (textIds == null || textIds.isEmpty())
            return false;

        sysTextMapper.deleteByIds(textIds);
        return true;
    }

    /**
     * 按照条件精确删除系统-文本表
     * 
     * @param sysText
     * @return boolean
     */
    @Override
    public boolean deleteBy(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return false;

        sysTextMapper.deleteBy(sysText);
        return true;
    }

    /**
     * 按照条件模糊删除系统-文本表
     * 
     * @param sysText
     * @return boolean
     */
    @Override
    public boolean deleteLike(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        if (sysText == null)
            return false;

        sysTextMapper.deleteLike(sysText);
        return true;
    }

    /** --公共-业务-自定义-- **/
    /**
     * 自定义方法
     * 
     * @param sysText
     * @return map集合
     */
    @Override
    public List<Map<String, Object>> custom(SysText sysText)
    {
        logger.debug("debug sysText: {}", sysText);

        // 自己实现自己的业务
        // sysTextMapper.selectCustom(selectSQL);
        return null;
    }

    /** ------------------------------------私有-方法------------------------------------ **/
    /**
     * 过滤参数为空
     * 
     * @param sysTexts
     * @return sysText集合
     */
    private List<SysText> filterEmpty(List<SysText> sysTexts)
    {
        List<SysText> news = new ArrayList<SysText>();
        for (SysText sysText : sysTexts)
            if (sysText != null)
                news.add(sysText);
        return news;
    }
}